<?php
//抑制所有错误信息
@error_reporting(E_ALL &~ E_NOTICE);
@set_time_limit(0);
date_default_timezone_set('PRC');
if (!isset($_SERVER['PHP_SELF']) || empty($_SERVER['PHP_SELF'])) $_SERVER['PHP_SELF']=$_SERVER['SCRIPT_NAME'];
header('Content-type:text/html; charset=utf-8'); //强制语言
/*****************************************/
/*           程序自行获取的变量          */
/*****************************************/
define('ROOT',str_replace('\\','/',dirname(__FILE__)).'/');
define('MODEL',ROOT.'model/');
define('TPL',DATA.'template/');
define('CRON',TRUE);
require(ROOT.'config.php');
require(ROOT.'common.func.php');
require(ROOT.'base.php');
/*****************************************/
/*                   其它                */
/*****************************************/
function cron_call ($m) {
	if(is_file(MODEL.$m.'.php')) {
		require(MODEL.$m.'.php');
	} else {
		sae_debug('File ('.$m.') not exists');
		return FALSE;
	}
	$m.='_model';
	$_ENV['_model']=$m::getInstance();
	$method='cron';
	if(method_exists($_ENV['_model'],$method)) {
		$_ENV['_model']->$method();
	} else {
		sae_debug('Cron function not exists'.$m);
	}
}
function task_add ($me='',$other='') {
	static $queue='';
	if (empty($queue)) $queue=new SaeTaskQueue(TASK);
	$url='http://'.$_SERVER['HTTP_APPNAME'].'.sinaapp.com/'.trim($_SERVER['PHP_SELF'],'/').'?m='.$me;
	if (!empty($other)) $url.='&'.http_build_query($other);
	$queue->addTask($url);
	$ret=$queue->push();
}
function is_call ($time) { //判断是否该调用了，误差三分钟以内。time格式:1205、0105
	$now=date('Hi');
	$before=date('Hi',strtotime('-3 minutes'));
	$beforedate=date('Ymd',strtotime('-3 minutes'));
	$next=date('Hi',strtotime('+3 minutes'));
	$nextdate=date('Ymd',strtotime('+3 minutes'));
	if ($beforedate==$nextdate) {
		if ($time>$before && $time<$next) return TRUE;
		else return FALSE;
	} else {
		if ($time>$before || $time<$next) return TRUE;
		else return FALSE;
	}
}
$_ENV=array();
$m=getgpc('m');
if (empty($m)) { //此次执行由SAE的CRON引起
	$base=new base();
	$cron=$base->db('get','cron');
	foreach ($cron as $key=>$val) {
		if ($val['enable'] && (!isset($val['time']) || is_call($val['time']) || (isset($val['standby_time']) && is_call($val['standby_time'])))) {
			task_add($key);
		}
	}
} else { //由自动添加的TaskQueue引起
	if (in_array($m,array('sign','reply','ban','del'),TRUE)) {
		cron_call($m);
	}
}

?>